﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModelProject.Entities;
using ModelProject.Repositorios;
using ModelProject.DTOs;

namespace ManagerProject.ClientesManagement
{
    public class ClientesManager : IClientesManager
    {
        
        private IClientesRepository clientesRepository;

        public ClientesManager(IClientesRepository clientesRepository)
        {
            if (clientesRepository == null)
            {
                throw new ArgumentNullException("clientesRepository");
            }

            this.clientesRepository = clientesRepository;
        }

        public IEnumerable<ClienteDTO> GetClientesDTO()
        {
            return clientesRepository.GetClientesDTO();
        }

        public ClienteDTO GetClienteDTOById(int clienteId)
        {
            return clientesRepository.GetClienteDTOById(clienteId);
        }

        public void SaveCliente(Cliente cliente)
        {
            var unitOfWork = clientesRepository.UnitOfWork;
            Cliente clienteOld = null;

            if (cliente.ClienteId > 0) //es actualizacion
            {
                clienteOld = clientesRepository.GetClienteById(cliente.ClienteId);
                clienteOld.Apellido = cliente.Apellido;
                clienteOld.Nombre = cliente.Nombre;
                clienteOld.NroDocumento = cliente.NroDocumento;
                clienteOld.TipoDocumentoId = cliente.TipoDocumentoId;

                clientesRepository.Modify(clienteOld);
            }
            else //es nuevo
                clientesRepository.Add(cliente);
            
            unitOfWork.Commit();
           
        }
    }
}
